#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' main entry '
__author__ = 'pingwu you'


'''
浏览器发送一个HTTP请求；
服务器收到请求，生成一个HTML文档；
服务器把HTML文档作为HTTP响应的Body发送给浏览器；
浏览器收到HTTP响应，从HTTP Body取出HTML文档并显示。

WSGI：Web Server Gateway Interface。
'''
#context 一个包含所有HTTP请求信息的dict对象
#start_response：一个发送HTTP响应的函数。Header只能发送一次，也就是只能调用一次start_response()函数
'''
HTTP请求的所有输入信息都可以通过environ获得，HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。
'''
def server_handle(context,start_response):
    method = context['REQUEST_METHOD']
    path = context['PATH_INFO']
    if method=='GET' and path=='/':
        return handle_home(context, start_response)
    if method=='POST' and path=='/signin':
        return handle_signin(context, start_response)    
    #默认输出
    import json
    start_response('200 OK', #状态码
    [ #head 切记request/response头区都是采用latin-1/ascii码模式！！！
        ('Content-Type', 'text/html;charset=utf-8'),
        ('ypwypw', json.dumps("abcd中国---888")),
    ])
    body = '<h1>您走错道路了啊，迷路拉啊, %s!</h1>' % (context['PATH_INFO'][1:] or 'web')
    return [body.encode("utf-8")]

def handle_home(context, start_response):
    import json
    start_response('200 OK', #状态码
    [ #head 切记request/response头区都是采用latin-1/ascii码模式！！！
        ('Content-Type', 'text/html;charset=utf-8'),
        ('ypwypw', json.dumps("abcd中国---888")),
    ])
    body = '<h1>Hello 主页欢迎你啊你好啊, %s!</h1>' % (context['PATH_INFO'][1:] or 'web')
    return [body.encode("utf-8")]

def handle_signin(context, start_response):
    import json
    start_response('200 OK', #状态码
    [ #head 切记request/response头区都是采用latin-1/ascii码模式！！！
        ('Content-Type', 'text/html;charset=utf-8'),
        ('ypwypw', json.dumps("abcd中国---888")),
    ])
    body = '<h1>Hello 签名注册欢迎你啊你好啊, %s!</h1>' % (context['PATH_INFO'][1:] or 'web')
    return [body.encode("utf-8")]

def start_wsgiserv(ipaddr='',port=9999):    
    from wsgiref.simple_server import make_server
    # 导入我们自己编写的application函数
    # 创建一个服务器，IP地址为空，端口是8000，处理函数是application:
    httpd = make_server(ipaddr, port, server_handle)
    print('Serving HTTP on port %s...'%port)
    # 开始监听HTTP请求:
    httpd.serve_forever()
